
/**
 * 
 */
package com.zsrt.day20170414.homework;

import com.zsrt.utils.ArrayUtil;

/**
 * 学生实现类
 * @author jmj
 * @date 2017年4月14日
 * @time 下午5:03:33
 */
public class studentDaoImpl implements StudentDao{
	
	

	/**
	 * 实现增加一个学生的操作
	 */
	@Override
	public Student[] add(String name, int age,Student[] students) {
		
		Student[] newStudents=new Student[students.length+1];
		for(int index = 0;index<students.length;index++){
			newStudents[index]=students[index];
		}
		Student xs = new Student();
		xs.setAge(age);
		xs.setName(name);
		newStudents[students.length]=xs;
		
		
		return newStudents;
	}
	
	/**
	 * 实现删除一个学生的操作
	 */
	@Override
	public Student[] delete(String name,Student[] students) {
		Student[] newStudents=new Student[students.length-1];
		int index=searchByName(name, students);
		if(index !=-1){
			for(int i=0;i<students.length;i++){
				if(i <index){
					newStudents[i]=students[i];
				}else if(i==index){
					newStudents[i]=students[i+1];
				}else {
					newStudents[i-1]=students[i];
				}
			}
			return newStudents;
		}else{
			System.out.println("该学生不在数组中");
			return students;
		}
		
	}

	/**
	 * 实现修改一个学生的信息的操作
	 */
	@Override
	public Student[] update(String name, int age,Student[] students) {
		int index = searchByName(name, students);
		if(index !=-1){
			for(int i=0;i<students.length;i++){
				if(i==index){
					//修改相应的信息  必须先new 一个对象
					Student xs = new Student();
					xs.setName(name);
					xs.setAge(age);
					students[i]=xs;
					break;
				}
			}
		}
		
		return students;
	}

	/**
	 * 通过名字批量删除学生
	 */
	@Override
	public void deleteSome(String[] names,Student[] students) {
		//查询要删除的人数
		int count=0;
		for(int j=0;j<names.length;j++){
			String delname= names[j];
				int index = searchByName(delname, students);
				if(index !=-1){
					count++;
				}
			
		}
		
		//得到新数组  要返回的数组
		Student[] newStudents=new Student[students.length-count];

		//得到要删除的数组
		String[] delStudent = new String[count];
		count=0;
		
		for(int i=0;i<names.length;i++){
			String delname= names[i];
			int index = searchByName(delname, students);
			if(index !=-1){
					delStudent[count]=names[i];
					count++;
			}
		}
		
		count=0;
		int nn=0;
		//执行删除操作
		for(int i=0;i<students.length;i++){
			nn=0;
			String name1 = students[i].getName();
			for(int index=0;index<delStudent.length;index++){
				String delname=delStudent[index];
				if( !name1.equals(delname)){
					
				}else{
					nn++;
				}
			}
			if(nn ==0){
				newStudents[count]=students[i];
				count++;
			}
		}
		ArrayUtil.StudentEntity(newStudents);
	}

	/**
	 * 实现通过姓名来查询学生的操作
	 */
	@Override
	public int searchByName(String delname,Student[] students) {
		
		for(int i=0;i<students.length;i++){
			String name = students[i].getName();
			if(delname.equals(name)){
				return i;
			}else{
				continue;
			}
		}
		return -1;
	}

	/**
	 * 查询年龄在25岁及以上以上的学生
	 */
	@Override
	public void searchByAge(Student[] students,int target) {
		
		for(int i=0;i<students.length;i++){
			
			int age=students[i].getAge();
			if(age >=target){
				System.out.println(students[i]);	
			}
		}
		
	}


	
	
	
	

}
